package com.fdh.myjdbcutil;

/**
 * 实体类的接口
 *
 * <p>注意:如果想要MyJdbcUtil操作实体类,则必须实现这个接口</p>
 *
 * @author fdh
 * @version 1.0
 */
public interface IMyEntity {
    /*
     实体类的要求:支持'封装好的实体类'和'不封装的实体类'

     基本要求:
        1. 必须要无参构造函数!!!
        2. 2.0及以上版本必须添加ColumnField注解才能对字段进行操作
        3. 必须实现IMyEntity

     不同实体类的特殊要求:
        不封装的实体类:
           不封装的实体类必须公开属性,可以不需要get,set方法,
           采用属性字段直接注入和提取的方式,并且只注入和提取公开字段
           MyJdbcUtil类里的'不带_upgrade'的方法就是给'不封装的实体类'用的
        封装的实体类:
           1. 封装好的实体类,字段可以为私有,
           但是需要注入实体类内容的字段需要set方法,
           把内容插入到数据库的字段需要get方法,
           MyJdbcUtil类里的'带_upgrade'的方法就是给封装的实体类用的

        实体类命名约定<非常重要,一定要看>
        3.0版本前字段名和类名必须和数据库的表名和列名对应
        3.0前老版本{
            命名规则:
                类:
                 类名: Table 对应的表名: table
                 类名: MyTable1 对应的表名: my_table1

                字段:
                 字段: username 对应的列名: username
                 字段: myFood 对应的列名: my_food
                以此类推
        }

        3.0版本后支持设置表名和字段名
        3.0后新版本{
            类:
                @TableName("table1")
                public class Entity

            字段:
                @ColumnField(colName = "username")
                private String name
            注意:如果没设置则默认为3.0版本前的方案
        }
     */
}
